一貫性レベル consistency level
なんかめっちゃ種類あるな...
Survey on consistency conditions
線形化可能性 linearizability
atomic consistency in CAP定理 CAP theorem
逐次一貫性 sequential consistency
read-your-write一貫性 read-your-write consistency
結果整合性 eventual consistency
因果律における一貫性 causally consistent
厳密な一貫性 strict consistency
個別のデータに対するreadとwriteに注目する
≠ readとwriteがグループ化された状態(トランザクション単位)
逐次一貫性 sequential consistency
すべてのwriteは順序を持つ
どのスレッドが書き込んだか、どのオブジェクトに書き込んだかに関わらず
すべてのスレッドはその順序で書き込みが行われたかのように見える
W:x=1W:y=1のような順序で書き込まれたのであれば、y=1を見たあとにx=1ではないxの以前の値が見えてはいけない
現実にx->yの順で書き込まれているかは関係ない
すべてのスレッドから"そう見えている"のであれば現実と違っていても良い
厳密な一貫性 strict consistency
現実の時間でwriteが反映される
readも現実の時間で最新のデータが読み込まれる
システム全体で正確な現在時刻に合意する必要がある
線形化可能性 linearizability
厳密な一貫性 strict consistencyとちがってあるオペレーションの開始と終了の時間的な幅を認める
時間が重なったオペレーションに関しては順序づけの制約がない
因果律における一貫性 causally consistent
逐次一貫性 sequential consistencyが無関係なすべての書き込みに対して順序を持っていないといけないのに対し
強い一貫性
線形化可能性 linearizability
厳密な一貫性 strict consistency
逐次一貫性 sequential consistency
データが一つしかないように見える
レプリケーションがないように見える
弱い一貫性
因果律における一貫性 causally consistent
結果整合性 eventual consistency
データのコピーが存在しているように見える
read-your-write一貫性 read-your-write consistency
ユーザーがページを読み込みなおしたしたとき更新が必ず反映されている
自分のプロフィールならば自分しか更新しないのでリーダーから読み取る
更新したことを覚えておき更新して数分以内ならばリーダーから読み取る
中央 or クライアント
「自分」がクロスデバイスにまたがる可能性がある
ブラウザで更新した後アプリで見る
クライアントにタイムスタンプをもてない
違うレプリカにルーティングされるかもしれない
モノトニックな読み取り monotonic read
Replicated Data Consistency Explained Through Baseball - Microsoft Research
強い一貫性よりは弱く、結果整合性 eventual consistencyよりは強い
複数のレプリカが存在するとき読みこむレプリカによって時間がまき戻ったように見える
これを防ぐような読み込み型
常に特定のレプリカにルーティングすればよい
そのレプリカがおちていたら?
一貫性のあるプレフィックス読み取り consistent prefix read
Replicated Data Consistency Explained Through Baseball - Microsoft Research
一貫性のあるプレフィックス読み取りが保証するのは、ある順序で一連の書き込みが行われた場合、それらの書き込みを読み取る者には必ず書き込まれた際と同じ順序でそ れらが見える、ということです。
シャーディングで問題になる
全体の書き込みに順序がつけられていない